package com.ssy.lingxi.scheduler.service;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.scheduler.api.model.ScheduleTaskCallbackVO;
import org.quartz.JobDetail;
import org.quartz.Trigger;

/**
 * 定时任务触发后，通知其他服务的接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-13
 */
public interface IScheduleTaskNotifyService {
    /**
     * 通知其他服务，如通知成功删除任务
     * @param trigger Quartz触发器
     * @param jobDetail Quartz任务
     */
    void notifyService(Trigger trigger, JobDetail jobDetail);

    /**
     * 通知其他服务，永久任务开始执行
     * @param trigger Quartz触发器
     * @param jobDetail Quartz任务
     */
    void notifyPermanentTask(Trigger trigger, JobDetail jobDetail);

    /**
     * 向调用服务发送回调信息
     * @param url   接口Url
     * @param callbackVO 参数
     * @return 是否成功
     */
    Wrapper<Void> sendCallbackToService(String url, ScheduleTaskCallbackVO callbackVO);

    /**
     * 发送异步消息给其他服务
     * @param url 接口Url
     * @param callbackVO 接口参数
     */
    void sendCallbackToServiceAsync(String url, ScheduleTaskCallbackVO callbackVO);
}
